home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PC World 2007 September
/
PCWorld_2007-09_cd.bin
/
system
/
ntfs
/
ntfsundelete.exe
/
{app}
/
linecache.pyc
(
.txt
)
< prev
next >
Wrap
Python Compiled Bytecode
|
2007-02-05
|
3KB
|
119 lines
# Source Generated with Decompyle++
# File: in.pyc (Python 2.4)
'''Cache lines from files.
This is intended to read lines from modules imported -- hence if a filename
is not found, it will look down the module search path for a file by
that name.
'''
import sys
import os
__all__ = [
'getline',
'clearcache',
'checkcache']
def getline(filename, lineno):
lines = getlines(filename)
if lineno <= lineno:
pass
elif lineno <= len(lines):
return lines[lineno - 1]
else:
return ''
cache = { }
def clearcache():
'''Clear the cache entirely.'''
global cache
cache = { }
def getlines(filename):
"""Get the lines for a file from the cache.
Update the cache if it doesn't contain an entry for this file already."""
if filename in cache:
return cache[filename][2]
else:
return updatecache(filename)
def checkcache(filename = None):
'''Discard cache entries that are out of date.
(This is not checked upon each call!)'''
if filename is None:
filenames = cache.keys()
elif filename in cache:
filenames = [
filename]
else:
return None
for filename in filenames:
(size, mtime, lines, fullname) = cache[filename]
try:
stat = os.stat(fullname)
except os.error:
del cache[filename]
continue
if size != stat.st_size or mtime != stat.st_mtime:
del cache[filename]
continue
def updatecache(filename):
"""Update a cache entry and return its list of lines.
If something's wrong, print a message, discard the cache entry,
and return an empty list."""
if filename in cache:
del cache[filename]
if not filename or filename[0] + filename[-1] == '<>':
return []
fullname = filename
try:
stat = os.stat(fullname)
except os.error:
msg = None
basename = os.path.split(filename)[1]
for dirname in sys.path:
try:
fullname = os.path.join(dirname, basename)
except (TypeError, AttributeError):
continue
try:
stat = os.stat(fullname)
continue
except os.error:
continue
else:
return []
except:
None<EXCEPTION MATCH>os.error
try:
fp = open(fullname, 'rU')
lines = fp.readlines()
fp.close()
except IOError:
msg = None
return []
size = stat.st_size
mtime = stat.st_mtime
cache[filename] = (size, mtime, lines, fullname)
return lines